package com.sojson.util;

import static com.sojson.util.cache.CacheUtil.CACHE_REDIS;

import java.io.IOException;
import java.util.Map;

/**
 * 系统参数基础工具类
 * 
 * @author liu
 * @date 2021-03-17
 */
public class SystemParamBaseUtil {

    /** 系统参数集合在缓存中的名字 */
    public static final String MAP_KEY = "SYSTEM_PARAM_MAP";

    /**
     * 设置系统参数
     * 
     * @param key
     * @param val
     * @throws IOException 
     */
    public static void put(String key, String val) throws IOException {
        CACHE_REDIS.setByMapStr(MAP_KEY, key, val);
    }

    /**
     * 设置系统参数
     * 
     * @param vals
     * @throws IOException 
     */
    public static void put(Map<String, String> vals) throws IOException {
        CACHE_REDIS.setByMapStr(MAP_KEY, vals);
    }

    /**
     * 删除系统参数
     * 
     * @param keys
     * @throws IOException 
     */
    public static void del(String... keys) throws IOException {
        CACHE_REDIS.delByMapKeyStr(MAP_KEY, keys);
    }

    /**
     * 获取系统参数
     * 
     * @return
     * @throws IOException 
     */
    public static Map<String, String> gets() throws IOException {
        return CACHE_REDIS.getMap(MAP_KEY);
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws IOException 
     */
    public static String get(String key) throws IOException {
        return CACHE_REDIS.getByMap(MAP_KEY, key);
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Long getLong(String key) throws Exception {
        return Long.valueOf(get(key));
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Integer getInt(String key) throws Exception {
        return Integer.valueOf(get(key));
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Short getShort(String key) throws Exception {
        return Short.valueOf(get(key));
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Byte getByte(String key) throws Exception {
        return Byte.valueOf(get(key));
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Double getDouble(String key) throws Exception {
        return Double.valueOf(get(key));
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Float getFloat(String key) throws Exception {
        return Float.valueOf(get(key));
    }

    /**
     * 获取系统参数
     * 
     * @param key
     * @return
     * @throws Exception 
     */
    public static Boolean getBoolean(String key) throws Exception {
        return Boolean.valueOf(get(key));
    }

}